// This file is part of EVM Account Mapping Pallet.

// Copyright (C) HashForest Technology Pte. Ltd.
// SPDX-License-Identifier: Apache-2.0

// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// 	http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//! Autogenerated weights for pallet_evm_account_mapping
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
//! DATE: 2023-11-29, STEPS: `50`, REPEAT: `50`, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! WORST CASE MAP SIZE: `1000000`
//! CPU: `<UNKNOWN>`
//! EXECUTION: ``, WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: `1024`

// Executed Command:
//    ./target/production/node-template
//    benchmark
//    pallet
//    --pallet=pallet_evm_account_mapping
//    --extrinsic=*
//    --chain=dev
//    --steps=50
//    --repeat=50
//    --no-storage-info
//    --no-median-slopes
//    --no-min-squares
//    --wasm-execution=compiled
//    --heap-pages=4096
//    --output=./pallets/evm_account_mapping/src/weights.rs
//    --template=./pallet-weight-template.hbs
//    --header
//    ./HEADER-APACHE2

#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
#![allow(unused_imports)]
#![allow(missing_docs)]

use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
use core::marker::PhantomData;

/// Weight functions needed for pallet_evm_account_mapping.
pub trait WeightInfo {
    fn meta_call() -> Weight;
}

/// Weights for pallet_evm_account_mapping using the Substrate node and recommended hardware.
pub struct SubstrateWeight<T>(PhantomData<T>);
impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
    /// Storage: `System::Account` (r:1 w:1)
    /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
    /// Storage: `EvmAccountMapping::AccountNonce` (r:1 w:1)
    /// Proof: `EvmAccountMapping::AccountNonce` (`max_values`: None, `max_size`: Some(56), added: 2531, mode: `MaxEncodedLen`)
    /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0)
    /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`)
    fn meta_call() -> Weight {
        // Proof Size summary in bytes:
        //   Measured:  `176`
        //   Estimated: `3593`
        // Minimum execution time: 23_000_000 picoseconds.
        Weight::from_parts(24_000_000, 3593)
            .saturating_add(T::DbWeight::get().reads(3_u64))
            .saturating_add(T::DbWeight::get().writes(2_u64))
    }
}

// For backwards compatibility and tests.
impl WeightInfo for () {
    /// Storage: `System::Account` (r:1 w:1)
    /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
    /// Storage: `EvmAccountMapping::AccountNonce` (r:1 w:1)
    /// Proof: `EvmAccountMapping::AccountNonce` (`max_values`: None, `max_size`: Some(56), added: 2531, mode: `MaxEncodedLen`)
    /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0)
    /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`)
    fn meta_call() -> Weight {
        // Proof Size summary in bytes:
        //   Measured:  `176`
        //   Estimated: `3593`
        // Minimum execution time: 23_000_000 picoseconds.
        Weight::from_parts(24_000_000, 3593)
            .saturating_add(RocksDbWeight::get().reads(3_u64))
            .saturating_add(RocksDbWeight::get().writes(2_u64))
    }
}
